//
//  YXYUserAccountTool.swift
//  SinaWeibo
//
//  Created by 袁向阳 on 16/6/26.
//  Copyright © 2016年 YXY.cn. All rights reserved.
//

import UIKit

class YXYUserAccountTool: NSObject {
    
    // 单例
    static let sharedUserAccountTool: YXYUserAccountTool = YXYUserAccountTool()
    
    // 将用户信息作为管理工具的属性, 避免了每次都去解档
    var userAccount: YXYUserAccount?
    
    override init() {
        super.init()
        // 创建的时候直接解档
        userAccount = readUserAccount()
    }
    
    // 判断是否已经登录 (只读属性)
    var isLogin: Bool {
        return access_token != nil
    }
    // 判断access_token是否有值
    var access_token: String? {
        // 没有登录
        if userAccount?.access_token == nil {
            
            return nil
            
        }else {
            // 升序，过期了
            if userAccount?.expires_date?.compare(NSDate()) == NSComparisonResult.OrderedAscending {
                
                return nil
                
            }else {
                return userAccount?.access_token
            }
            
        }
    }
    
    
    let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("userAccount.data")
    
    // 归档
    func saveUserAccount (userAccount: YXYUserAccount) {
        
        // 如果第一次调用我们的单例 userAccount 是nil
        // 然后我马上使用我们的userAccount 需要我们在保存数据的时候 要自己给单例对象身上的属性useraccount 赋值
        self.userAccount = userAccount
        
        NSKeyedArchiver.archiveRootObject(userAccount, toFile: path)
        
    }
    
    // 解档
    func readUserAccount () -> YXYUserAccount? {
        
        let userAccount = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? YXYUserAccount
        return userAccount
    }
}
